package com.rybbaby.tss.front.tssStudent.dao;


import com.google.common.collect.ImmutableMap;
import com.rybbaby.tss.core.web.dao.IGenericDao;
import com.rybbaby.tss.front.tssClasses.entity.TssClasses;
import com.rybbaby.tss.front.tssPertainRelation.entity.TssPertainRelation;
import com.rybbaby.tss.front.tssStudent.entity.TssStudent;

import java.util.List;
import java.util.Map;

/**
 * @author 雷春琼
 * @description 客户表数据库操作接口
 * @createDate 2017-08-09 下午2:48:34
 */
public interface ITssStudentDao extends IGenericDao<TssStudent> {
    /**
     * 支持批量修改客户状态以及名单状态
     *
     * @param immutableMap
     * @param ids
     * @return
     */
    Integer updateListStatusOrStatusByIds(ImmutableMap immutableMap, String adminUserId, String ids);

    List<TssStudent> findStudentByName(String name) throws Exception;

    /**
     * 通过id获取会员信息
     *
     * @param id
     * @return
     */
    Map<String, Object> findById(String id);


    /**
     * 根据id批量修改参数
     *
     * @param map
     * @param id
     * @return
     */
    Integer updateParameterById(Map<String, Object> map, String id);

    List<Map<String, Object>> findTodayStudentByType(String adminUserIds);

    List<Map<String, Object>> findMonthStudentByType(String adminUserIds);


    /**
     * 导出数据相关抽象方法
     * 杨然
     * */
    /**
     * 根据id数组查询student集合
     */
    List<TssStudent> getStudentListById(List<String> stuIdList);

    /**
     * 查询所有数据
     */
    List<TssStudent> getAllStudentList();

    /**
     * 根据联系电话查询student集合
     */
    List<TssStudent> findStudentByContactPhone(String contactPhone) throws Exception;

    /**
     * 根据客户姓名查询数据
     * */
    //List<TssStudent> findStudentByName(String stuName)throws Exception;


    /**
     * 客户转会员
     *
     * @param id
     * @return
     */
    Integer updateStudentIsMember(String id);

    /**
     * 根据手机号查询客户信息
     *
     * @param contractPhone
     * @return
     */
    List<TssStudent> findBycontractPhone(String contractPhone);


    /**
     * 验证是否有重复数据
     * 杨然
     */
    List<TssStudent> validationStudent(String name, String nickName, Integer sex);


    /**
     * 导入幼儿信息返回id
     */
    String saveInport(TssStudent student);

    /**
     * 根据手机号操作人查询用户信息
     *
     * @param motherPhone
     * @param adminUserId
     * @return
     */
    List<TssStudent> findByPhone(String motherPhone, String adminUserId) throws Exception;

    /**
     * 根据手机号自动关联园所
     *
     * @param contactPhone
     * @return
     */
    List<Map<String, Object>> associatedPark(String contactPhone);

    List<TssStudent> findByQuickMark(String quickMark) throws Exception;

    /**
     * 获取某以班级下的所有学生
     *
     * @param classId 班级Id
     * @return
     */
    List<TssStudent> getStudentsByClassId(String classId);
}
